﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common
{
    public interface ISearchState
    {
        /// <summary>
        /// Gets a successor to this search state
        /// </summary>
        /// <returns></returns>
        ISearchStateArc[] getSuccessors();
        /// <summary>
        /// Determines if this is an emitting state
        /// </summary>
        /// <returns></returns>
        Boolean isEmitting();
        /// <summary>
        /// Determines if this is a final state
        /// </summary>
        /// <returns></returns>
        Boolean isFinal();
        /// <summary>
        /// Returns a pretty version of the string representation for this object
        /// </summary>
        /// <returns></returns>
        String toPrettyString();
        /// <summary>
        /// Returns a unique signature for this state
        /// </summary>
        /// <returns></returns>
        String getSignature();
        /// <summary>
        /// Gets the word history for this state
        /// </summary>
        /// <returns></returns>
        IWordSequence getWordHistory();
        /// <summary>
        /// Returns the lex tree state
        /// </summary>
        /// <returns></returns>
        Object getLexState();
        /// <summary>
        /// Returns the order of this particular state
        /// </summary>
        /// <returns></returns>
        int getOrder();

    }
}
